"""
1.列表的定义和使用
     用下标访问列表
     添加元素
     删除元素
"""

def list_1():
    #1.定义列表
    fruits = ['葡萄',"苹果","菠萝","西瓜"]
    #查看fruits的数据类型
    print( type(fruits) )
    #2.通过下标访问元素
    print( fruits[0] ) #列表中第一个元素
    print( fruits[1] ) #列表中第二个元素
    print( fruits[-1] ) #倒数第一个元素
    print( fruits[-2] ) #倒数第二个元素
    #print( fruits[4] ) #IndexError: list index out of range  索引值越界
    #3.通过索引值替换元素
    fruits[1] = "香蕉"
    print(fruits) #['葡萄', '香蕉', '菠萝', '西瓜']
    #4.添加元素
    fruits.append("柚子") #在列表末尾追加元素
    print(fruits)
    fruits.insert(0,"柠檬") #在指定索引值插入元素
    print(fruits)
    #5.删除元素
    del fruits[1] #指定索引进行删除
    print(fruits)# ['柠檬', '香蕉', '菠萝', '西瓜', '柚子']
    f = fruits.pop() # 在末尾删除元素  将删除的元素进行返回
    print(fruits,"被删除的元素：",f)
    fruits.pop(0)#指定索引进行删除
    print(fruits)
    fruits.remove("菠萝")#指定元素删除
    print(fruits)

"""
2.列表的常用操作
    - 列表连接
    - 获取长度
    - 遍历列表
    - 列表切片
    - 列表排序
    - 列表反转
    - 查找元素
"""
def list_2():
    fruits = ['葡萄', "苹果", "菠萝", "西瓜"]
    #1.列表的加法 列表的拼接 合并
    fruits += ["柠檬","柚子","香蕉"]
    print(fruits)
    anmial = ["猴子", "大象"]
    fruits.extend(anmial)
    print(fruits)
    #2.获取列表长度
    print("列表长度：",len(fruits))
    #3.利用for循环 遍历列表
    for fruit in fruits:
        print(fruit,end=" ")
    print()
    # 通过循环索引值进行遍历
    for index in range(len(fruits)):
        print(fruits[index],end="。")
    print()
    #通过 enumerate函数处理列表，在遍历的时候可以打印索引又可以打印元素
    for index,elem in enumerate(fruits):
        print(elem,"的索引值为：",index)

    #4.切片
    fruits2 = fruits[1:4]
    print(fruits2)
    fruits3 = fruits # 赋值  两个变量（fruits，fruits3）数据赋值过去，但是引用地址还是同一个
    fruits4 = fruits[:] # 复制  两个变量（fruits，fruits3）数据复制过去，重新创建一个引用地址
    # fruits3  和  fruits4  两者数据都是一模一样的
    print("fruits3",fruits3)
    print("fruits4", fruits4)
    fruits.pop() #将大象删除
    print("fruits3",fruits3) #['葡萄', '苹果', '菠萝', '西瓜', '柠檬', '柚子', '香蕉', '猴子']
    print("fruits4", fruits4) #['葡萄', '苹果', '菠萝', '西瓜', '柠檬', '柚子', '香蕉', '猴子', '大象']
    #利用切片 对列表进行反转
    fruits5 = fruits[::-1]
    print("反转后的列表:",fruits5)
    #5.排序
    fruits6 = sorted(fruits,reverse=True) #是将排序后的结果进行返回，不会改变原列表  reverse设为True 将排序后结果进行反转
    fruits.sort() # 会改变列表
    print(fruits6)
    print(fruits)
    #6.反转
    fruits.reverse() # 会改变原列表
    print(fruits)
    print("列表反转-函数：",list( reversed(fruits) ))
    print("列表反转-切片:",fruits[::-1])
    #7.元素出现的次数
    count = fruits.count("猴子")
    print("猴子出现了",count,"次")
    #8.查找元素，显示该元素在列表中的索引值
    index = fruits.index("猴子")
    print("马楼所在的索引值：",index)
    fruits.clear()
    print(fruits)
if __name__ == '__main__':
    #list_1()
    list_2()

























